#ifndef POINT_INCLUDED
#define POINT_INCLUDED

class point
{
protected:
    double x;
    double y;
    double z;

public:
    point();
    point(double x,double y,double z);
    point cylindre(double r,double phi, double h);
    point polaire(double r,double phi,double teta);
    point& operator=(const point& p);
    bool operator==(const point& p) const {return ((x==p.x)&&(y==p.y)&&(z==p.z));};
    point& operator+=(const double& t);
    point& operator*=(const double& t);
    point& operator-=(const double& t);
    double operator* (const point& p) const {return p.x*x+p.y*y+p.z*z;};
    point operator^ (const point& p) const;
    point operator+ (const point& p) const;
    point operator- (const point& p) const;
    point& operator+=(const point& p);
    point& operator-=(const point& p);
    point& operator*=(const point& p);
	point operator+ (const double& t) const;
	point operator- (const double& t) const;
	point operator* (const double& t) const;
	point& translation(double x,double y,double z);
	point& rotation(double xaxe,double yaxe,double zaxe,double angle);
	double Getx() const {return x;}
	double Gety() const {return y;}
	double Getz() const {return z;}
	double Getphi() const;
	double Geteta() const;
	point& Setx(double x);
	point& Sety(double y);
	point& Setz(double z);
};

inline point operator+ (const double& t,const point& p)
{
    return p+t;
}

inline point operator- (const double& t,const point& p)
{
    return t+p*double(-1);
}

inline point operator* (const double& t,const point& p)
{
    return p*t;
}

#endif
